class Solution {
public:
int myAtoi\(string str\) {
int i=0;int flag=0;
long long result=0;
for\(i=0;i<str.size\(\);i++\){
if\(isdigit\(str\[i\]\)\){
result=result\*10+\(str\[i\]-48\);
if\(!isdigit\(str\[i+1\]\)\) break;
if\(result> INT\_MAX\) result=INT\_MAX;
else{
if\(result< INT\_MIN\){
result=INT\_MIN;
}
else
result=result;
}
}
else{
if\(\(str\[i\]=='+'\|str\[i\]=='-'\) && !isdigit\(str\[i+1\]\)\)
{result=0;
break;}
if\(str\[i\]=='-'\) flag=1-flag;
if\(str\[i\]!='+' && str\[i\]!='-'&& str\[i\]!=' '\){
break;
}
}
}
if\(flag\) result=-result;
if\(result> INT\_MAX\) result=INT\_MAX;
else{
if\(result< INT\_MIN\){
result=INT\_MIN;
}
else
result=result;}
return result;
}
};
重点:
1.这个题目的例子太奇葩了,主要是他给的正确结果和我觉得的正确结果完全不一样。
2.要判断正负,但是+-2 这种例子是错误的,就是不能两个符号连续给
3.要注意空格,但是+01 23 这种还是1
4.要注意负数
5.考虑上下界,注意如果超过,就按照最大值最小值给